package com.team2.insulatingtools.modular.tools.service;

import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import com.team2.insulatingtools.modular.tools.dto.ToolDetailQueriedDto;
import com.team2.insulatingtools.modular.tools.entity.ToolDetail;
import com.team2.insulatingtools.modular.tools.entity.Tools;
import com.team2.insulatingtools.modular.tools.pojo.request.MultipleToolDetailRequest;
import com.team2.insulatingtools.modular.tools.pojo.request.ToolDetailAddRequest;
import com.team2.insulatingtools.modular.tools.dto.ToolDetailQueriedDto;
import com.team2.insulatingtools.modular.tools.pojo.request.ToolDetailRequest;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 工具详细信息  服务类
 *
 * @author team2
 * @date 2023/04/03 09:48
 */
public interface ToolDetailService extends IService<ToolDetail> {

    /**
     * 新增
     *
     * @param toolDetailRequest 请求参数
     * @author team2
     * @date 2023/04/03 09:48
     */
    void add(ToolDetailRequest toolDetailRequest);

    /**
     * 删除
     *
     * @param toolDetailRequest 请求参数
     * @author team2
     * @date 2023/04/03 09:48
     */
    void del(ToolDetailRequest toolDetailRequest);

    /**
     * 编辑
     *
     * @param toolDetailRequest 请求参数
     * @author team2
     * @date 2023/04/03 09:48
     */
    void edit(ToolDetailRequest toolDetailRequest);
    /**
     * 编辑
     *
     * @param toolDetailRequest 请求参数
     * @author team2
     */
    void updateBatch(ToolDetailRequest toolDetailRequest);

    /**
     * 查询详情
     *
     * @param toolDetailRequest 请求参数
     * @author team2
     * @date 2023/04/03 09:48
     */
    ToolDetail detail(ToolDetailRequest toolDetailRequest);

    /**
     * 获取列表
     *
     * @param toolDetailRequest        请求参数
     * @return List<ToolDetail>   返回结果
     * @author team2
     * @date 2023/04/03 09:48
     */
    List<ToolDetail> findList(ToolDetailRequest toolDetailRequest);

    /**
     * 获取列表（带分页）
     *
     * @param toolDetailRequest              请求参数
     * @return PageResult<ToolDetail>   返回结果
     * @author team2
     * @date 2023/04/03 09:48
     */
    PageResult<ToolDetail> findPage(ToolDetailRequest toolDetailRequest);



    ToolDetail updateById(ToolDetailRequest toolDetailRequest);

    List<ToolDetail> updateByMultipleId(MultipleToolDetailRequest multipleToolDetailRequest);

    List<ToolDetailQueriedDto> pageByWorkshopAndTool(String workshopName, String toolName, Integer curr, Integer size);

    ToolDetail queryById(Integer id);

    Tools updateToolsUsingToolDetail(ToolDetailRequest toolDetailRequest);

    List<Tools> updateMultipleToolsUsingMultipleToolDetails(MultipleToolDetailRequest multipleToolDetailRequest);

    /**
     * 增加具体内容（分节信息）
     * @param request
     * @return
     */
    ResponseData addToolsDetail(ToolDetailAddRequest request);

    /**
     * 删除分节
     * @param id
     * @return
     */
    ResponseData delToolsDetail(int id);

    /**
     * 根据父工具查找分节内容
     * @param id
     * @return
     */
    ResponseData selByTid(int id);

    /**
     * 根据父工具查找分节内容列表分页
     * @param tid
     * @return
     */
    ResponseData pageByTid(int tid,int page,int size);

    /**
     * 根据tool_id批量删除详细信息
     * @param toolIdList
     */
    void deleteBatchByToolIdList(List<Integer> toolIdList);


}
